﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JBeamLibrary.VehicleParts.Enums
{
    public enum ElementProperties
    {
        /* None */
        None,

        /* Beam related */
        BeamType,
        BeamStrength,
        BeamSpring,
        BeamDamp,
        BeamDeform,
        BeamPrecompression,
        BeamLongBound,
        BeamShortBound,
        BeamLimitSpring,
        BeamLimitDamp,
        BeamDampRebound,
        BeamDampFast,
        BeamDampReboundFast,
        BeamDampVelocitySplit,

        /* Node related */
        NodeWeight,
        NodeMaterial,

        /* Flexbodies related */
        DisableSection,
        DebugPositioning,
        IsCollisionMesh,
        Rotation,
        Translation,

        /* Hub wheels related */
        EnableTireSideSupportBeams,
        Radius,
        WheelOffset,
        TireWidth,
        NumRays,
        AxleBeams,
        Propulsed,
        EnableABS,
        AbsThreshold,
        PressurePSI,
        MaxPressurePSI,
        ReinforcementPressurePSI,
        PressureSpring,
        ReinforcementPressureSpring,
        PressureDamp,
        ReinforcementPressureDamp,
        BrakeTorque,
        ParkingTorque,
        Speedo,
        EnableTireSideVBeams,

        /* Hub */
        HubRadius,
        HubWidth,
        HubBeamSpring,
        HubBeamDamp,
        HubBeamDeform,
        HubBeamStrength,
        HubNodeWeight,
        HubNodeMaterial,
        HubFrictionCoef,

        /* Wheel tread & periphery & side */
        WheelTreadBeamSpring,
        WheelTreadBeamDamp,
        WheelTreadBeamDeform,
        WheelTreadBeamStrength,
        WheelPeripheryBeamSpring,
        WheelPeripheryBeamDamp,
        WheelPeripheryBeamDeform,
        WheelPeripheryBeamStrength,
        WheelSideBeamSpring,
        WheelSideBeamDamp,
        WheelSideBeamDeform,
        WheelSideBeamStrength,
        WheelSideBeamSpringExpansion,
        WheelSideBeamDampExpansion,

        /* Hubcaps */
        EnableHubcaps,
        HubcapSelfCollision,
        HubcapCollision,
        HubcapWidth,
        HubcapOffset,
        HubcapBeamSpring,
        HubcapBeamDamp,
        HubcapBeamDeform,
        HubcapBeamStrength,
        HubcapAttachBeamSpring,
        HubcapAttachBeamDamp,
        HubcapAttachBeamDeform,
        HubcapAttachBeamStrength,
        HubcapNodeWeight,
        HubcapCenterNodeWeight,
        HubcapNodeMaterial,
        HubcapFrictionCoef,
        HubcapGroup,
        HubcapBreakGroup,

        /* Grouping */
        Group,
        BreakGroup,
        BreakGroupType,
        DeformGroup,

        /* Global flags */
        Collision,
        SelfCollision,
        Optional,
        DisableMeshBreaking,

        /* Hydro related */
        Factor,
        SteeringWheelLock,
        LockDegrees,
        InRate,
        OutRate,
        InLimit,
        OutLimit,
        InputCenter,
        AutoCenterRate,
        InputSource,
        InputFactor,

        /* Light related */
        LightInnerAngle,
        LightOuterAngle,
        LightBrightness,
        LightRange,
        LightColor,
        LightAttenuation,
        LightCastShadows,

        /* Thrusters */
        ThrustLimit,
        Control,

        /* Other */
        Name,
        FrictionCoef,
        DragCoef,
        RemoteCollisionThickness,
        EngineGroup,
        SpringExpansion,
        DampExpansion,
        Pressure,
        Surface,
        VolumeCoef,
        MaxPressure,
        DeformationTriggerRatio,
        DeformMaterialBase,
        DeformMaterialDamaged
    }
}
